Distributed network query using walker agents

ABSTRACT

In one embodiment, a device in a network receives a query walker agent configured to query information from a distributed set of devices in the network based on a query. The device executes the query walker agent to identify the query. The device updates state information of the executing query walker agent using local information from the device and based on the query. The device unloads the executing query walker agent after updating the state information. The device propagates the query walker agent with the updated state information to one or more of the distributed set of devices in the network, when the updated state information does not fully answer the query.

RELATED APPLICATION

This application claims priority to U.S. Provisional Patent Appl. No.62/529,644, filed on Jul. 7, 2017, entitled DISTRIBUTED NETWORK QUERYUSING WALKER AGENTS, by Thubert, et al., the contents of which areincorporated herein by reference.

TECHNICAL FIELD

The present disclosure relates generally to computer networks, and, moreparticularly, to a distributed network query using walker agents.

BACKGROUND

Low power and Lossy Networks (LLNs), e.g., sensor networks, have amyriad of applications, such as Smart Grid and Smart Cities. Variouschallenges are presented with LLNs, such as lossy links, low bandwidth,battery operation, low memory and/or processing capability of a device,etc. Changing environmental conditions may also affect devicecommunications. For example, physical obstructions (e.g., changes in thefoliage density of nearby trees, the opening and closing of doors,etc.), changes in interference (e.g., from other wireless networks ordevices), propagation characteristics of the media (e.g., temperature orhumidity changes, etc.), and the like, also present unique challenges toLLNs.

An example implementation of an LLN is the “Internet of Things” (IoT),which may be used by those in the art to refer to uniquely identifiableobjects/things and their virtual representations in a network-basedarchitecture. In particular, the IoT involves the ability to connectmore than just computers and communications devices, but rather theability to connect “objects” in general, such as lights, appliances,vehicles, window shades and blinds, doors, locks, etc.

Many traditional computing approaches are not applicable to LLNs and theIoT. For example, to optimize a metric along a path using a traditionalrouting approach, the prerequisite is that the topology and the relevantmetric are known by the device performing the computation. However, thelimitations of many LLN devices in terms of memory capacity, duty cycle,etc., often make such computations impossible.

BRIEF DESCRIPTION OF THE DRAWINGS

The embodiments herein may be better understood by referring to thefollowing description in conjunction with the accompanying drawings inwhich like reference numerals indicate identically or functionallysimilar elements, of which:

FIG. 1 illustrate an example communication network;

FIG. 2 illustrates an example network device/node; and

FIGS. 3A-3D illustrate examples of a walker agent being passed from onedevice/node to another in a network;

FIGS. 4A-4H illustrate and example of performing a network query using aquery walker agent;

FIG. 5 illustrates an example simplified procedure for executing a querywalker agent; and

FIG. 6 illustrates an example simplified procedure for using a querywalker agent to perform a distributed query in a network.

DESCRIPTION OF EXAMPLE EMBODIMENTS Overview

According to one or more embodiments of the disclosure, a device in anetwork receives a query walker agent configured to query informationfrom a distributed set of devices in the network based on a query. Thedevice executes the query walker agent to identify the query. The deviceupdates state information of the executing query walker agent usinglocal information from the device and based on the query. The deviceunloads the executing query walker agent after updating the stateinformation. The device propagates the query walker agent with theupdated state information to one or more of the distributed set ofdevices in the network, when the updated state information does notfully answer the query.

In further embodiments, a node in a network receives a query forinformation available from a distributed set of devices in the network.The node generates a query walker agent configured for execution by thedevices in the distributed set of devices to answer the query using theinformation available from the distributed set of devices. The nodesends the query walker agent to at least one of the devices in thedistributed set of devices. The at least one device updates stateinformation of the query walker agent and propagates the query walkeragent to one or more other devices of the distributed set. The nodereceives an answer to the query from a particular one of the distributedset of devices based on the updated state information of the querywalker agent.

Description

A computer network is a geographically distributed collection of nodesinterconnected by communication links and segments for transporting databetween end nodes, such as personal computers and workstations, or otherdevices, such as sensors, etc. Many types of networks are available,ranging from local area networks (LANs) to wide area networks (WANs).LANs typically connect the nodes over dedicated private communicationslinks located in the same general physical location, such as a buildingor campus. WANs, on the other hand, typically connect geographicallydispersed nodes over long-distance communications links, such as commoncarrier telephone lines, optical lightpaths, synchronous opticalnetworks (SONET), synchronous digital hierarchy (SDH) links, orPowerline Communications (PLC), and others. Other types of networks,such as field area networks (FANs), neighborhood area networks (NANs),personal area networks (PANs), etc. may also make up the components ofany given computer network.

In various embodiments, computer networks may include an Internet ofThings network. Loosely, the term “Internet of Things” or “IoT” (or“Internet of Everything” or “IoE”) refers to uniquely identifiableobjects (things) and their virtual representations in a network-basedarchitecture. In particular, the IoT involves the ability to connectmore than just computers and communications devices, but rather theability to connect “objects” in general, such as lights, appliances,vehicles, heating, ventilating, and air-conditioning (HVAC), windows andwindow shades and blinds, doors, locks, etc. The “Internet of Things”thus generally refers to the interconnection of objects (e.g., smartobjects), such as sensors and actuators, over a computer network (e.g.,via IP), which may be the public Internet or a private network.

Often, IoT networks operate within a shared-media mesh networks, such aswireless or PLC networks, etc., and are often on what is referred to asLow-Power and Lossy Networks (LLNs), which are a class of network inwhich both the routers and their interconnect are constrained. That is,LLN devices/routers typically operate with constraints, e.g., processingpower, memory, and/or energy (battery), and their interconnects arecharacterized by, illustratively, high loss rates, low data rates,and/or instability. IoT networks are comprised of anything from a fewdozen to thousands or even millions of devices, and supportpoint-to-point traffic (between devices inside the network),point-to-multipoint traffic (from a central control point such as a rootnode to a subset of devices inside the network), and multipoint-to-pointtraffic (from devices inside the network towards a central controlpoint).

Fog computing is a distributed approach of cloud implementation thatacts as an intermediate layer from local networks (e.g., IoT networks)to the cloud (e.g., centralized and/or shared resources, as will beunderstood by those skilled in the art). That is, generally, fogcomputing entails using devices at the network edge to provideapplication services, including computation, networking, and storage, tothe local nodes in the network, in contrast to cloud-based approachesthat rely on remote data centers/cloud environments for the services. Tothis end, a fog node is a functional node that is deployed close to fogendpoints to provide computing, storage, and networking resources andservices. Multiple fog nodes organized or configured together form a fogsystem, to implement a particular solution. Fog nodes and fog systemscan have the same or complementary capabilities, in variousimplementations. That is, each individual fog node does not have toimplement the entire spectrum of capabilities. Instead, the fogcapabilities may be distributed across multiple fog nodes and systems,which may collaborate to help each other to provide the desiredservices. In other words, a fog system can include any number ofvirtualized services and/or data stores that are spread across thedistributed fog nodes. This may include a master-slave configuration,publish-subscribe configuration, or peer-to-peer configuration.

FIG. 1 is a schematic block diagram of an example simplified computernetwork 100 illustratively comprising nodes/devices at various levels ofthe network, interconnected by various methods of communication. Forinstance, the links may be wired links or shared media (e.g., wirelesslinks, PLC links, etc.) where certain nodes, such as, e.g., routers,sensors, computers, etc., may be in communication with other devices,e.g., based on connectivity, distance, signal strength, currentoperational status, location, etc.

Specifically, as shown in the example network 100, three illustrativelayers are shown, namely the cloud 110, fog 120, and IoT device 130.Illustratively, the cloud 110 may comprise general connectivity via theInternet 112, and may contain one or more datacenters 114 with one ormore centralized servers 116 or other devices, as will be appreciated bythose skilled in the art. Within the fog layer 120, various fognodes/devices 122 may execute various fog computing resources on networkedge devices, as opposed to datacenter/cloud-based servers or on theendpoint nodes 132 themselves of the IoT layer 130. Data packets (e.g.,traffic and/or messages sent between the devices/nodes) may be exchangedamong the nodes/devices of the computer network 100 using predefinednetwork communication protocols such as certain known wired protocols,wireless protocols, PLC protocols, or other shared-media protocols whereappropriate. In this context, a protocol consists of a set of rulesdefining how the nodes interact with each other.

Those skilled in the art will understand that any number of nodes,devices, links, etc. may be used in the computer network, and that theview shown herein is for simplicity. Also, those skilled in the art willfurther understand that while the network is shown in a certainorientation, the network 100 is merely an example illustration that isnot meant to limit the disclosure.

FIG. 2 is a schematic block diagram of an example computing device/node200 that may be used with one or more embodiments described herein e.g.,as any of the devices shown in FIG. 1 above or any of the devicesdescribed further below. The device may comprise one or more networkinterfaces 210 (e.g., wired, wireless, cellular, PLC, etc.), at leastone processor 220, and a memory 240 interconnected by a system bus 250,as well as a power supply 260 (e.g., battery, plug-in, etc.).

The network interface(s) 210 contain the mechanical, electrical, andsignaling circuitry for communicating data over links coupled to thenetwork 100. The network interfaces may be configured to transmit and/orreceive data using a variety of different communication protocols. Note,further, that the nodes may have two or more different types of networkconnections 210, e.g., wireless and wired/physical connections, and thatthe view herein is merely for illustration. Also, while the networkinterface 210 is shown separately from power supply 260, for fog modulesusing PLC, the network interface 210 may communicate through the powersupply 260, or may be an integral component of the power supply. In somespecific configurations the PLC signal may be coupled to the power linefeeding into the power supply.

The memory 240 comprises a plurality of storage locations that areaddressable by the processor 220 and the network interfaces 210 forstoring software programs and data structures associated with theembodiments described herein. The processor 220 may comprise hardwareelements or hardware logic adapted to execute the software programs andmanipulate the data structures 245. An operating system 242, portions ofwhich are typically resident in memory 240 and executed by theprocessor, functionally organizes the device by, among other things,invoking operations in support of software processes and/or servicesexecuting on the device. These software processes and/or services maycomprise an illustrative “walker” agent process 248, as describedherein.

It will be apparent to those skilled in the art that other processor andmemory types, including various computer-readable media, may be used tostore and execute program instructions pertaining to the techniquesdescribed herein. Also, while the description illustrates variousprocesses, it is expressly contemplated that various processes may beembodied as modules configured to operate in accordance with thetechniques herein (e.g., according to the functionality of a similarprocess). Further, while the processes have been shown separately, thoseskilled in the art will appreciate that processes may be routines ormodules within other processes.

Routing process/services 244 include computer executable instructionsexecuted by processor 220 to perform functions provided by one or morerouting protocols, such as an Interior Gateway Protocol (IGP) (e.g.,Open Shortest Path First, “OSPF,” andIntermediate-System-to-Intermediate-System, “IS-IS”), the Border GatewayProtocol (BGP), etc., as will be understood by those skilled in the art.These functions may be configured to manage a forwarding informationdatabase including, e.g., data used to make forwarding decisions. Inparticular, changes in the network topology may be communicated amongrouters 200 using routing protocols, such as the conventional OSPF andIS-IS link-state protocols (e.g., to “converge” to an identical view ofthe network topology).

Notably, routing process 244 may also perform functions related tovirtual routing protocols, such as maintaining VRF instance, ortunneling protocols, such as for MPLS, generalized MPLS (GMPLS), etc.,each as will be understood by those skilled in the art. Also, EVPN,e.g., as described in the IETF Internet Draft entitled “BGP MPLS BasedEthernet VPN” <draft-ietf-12vpn-evpn>, introduce a solution formultipoint L2VPN services, with advanced multi-homing capabilities,using BGP for distributing customer/client media access control (MAC)address reach-ability information over the core MPLS/IP network.

Another example protocol that routing process 244 may implement,particularly in the case of LLN mesh networks, is the Routing Protocolfor Low Power and Lossy (RPL), which provides a mechanism that supportsmultipoint-to-point (MP2P) traffic from devices inside the LLN towards acentral control point (e.g., LLN Border Routers (LBRs) or “rootnodes/devices” generally), as well as point-to-multipoint (P2MP) trafficfrom the central control point to the devices inside the LLN (and alsopoint-to-point, or “P2P” traffic). RPL (pronounced “ripple”) maygenerally be described as a distance vector routing protocol that buildsa Directed Acyclic Graph (DAG) for use in routing traffic/packets 140,in addition to defining a set of features to bound the control traffic,support repair, etc. Notably, as may be appreciated by those skilled inthe art, RPL also supports the concept of Multi-Topology-Routing (MTR),whereby multiple DAGs can be built to carry traffic according toindividual requirements.

Intelligent Walker Agents in a Network

As noted above, many devices/nodes in constrained networks, such as LLNsand the IoT, have very limited resources in terms of available memory,processing power, power source (e.g., battery charge, etc.), and thelike. Accordingly, such devices may not be able to locally perform manycomputationally-intensive tasks. This is particularly true in cases inwhich the processing device/node is required to maintain stateinformation for multiple devices/nodes in the network.

To address the various limitations of constrained devices in certainnetworks, existing approaches rely on the deployed devices leveraging amore capable device to perform the computations. For example, thedevices in the network could offload the computations to a remote serveror cloud-based service outside of the local network. However, doing soalso increases the amount of bandwidth consumed to relay the informationto and from such a server or service (e.g., via a WAN connection). Amore recent evolution proposes the use of the local networking devices,such as edge routers, to perform the computations in the “fog.”

According to various embodiments, the concept of a “walker agent” isintroduced herein and offers yet another alternative approach toperforming more complex computations in a network of constraineddevices/nodes. In general, a walker agent refers to a software agentthat loads and executes on a particular device/node in a network,updates state information for its computation during execution, passesboth its executable code and updated state information to the nextdevice/node in the network for execution, and then unloads/removes itslocal copy of the agent. In other words, execution of a walker agent“hops” from one device in the network to the next, while maintaining thestate information for its computations during these transfers.

FIGS. 3A-3D illustrate examples of a walker agent being passed from onedevice/node to another in a network. As shown, consider the case of twodevices, device 302 a and device 302 b, both located in a network 300.In some cases, devices 302 a-302 b may be neighboring devices having adirect communication link there between. In other cases, devices 302a-302 b may be separated by any number of intermediate devices thatrelay communications between devices 302 a-302 b.

During operation, device 302 a may receive walker agent 304 from anotherdevice in the network, such as a neighbor of device 302 a, anotherconstrained device along a routing path in the network, or from asupervisory device that provides administrative control over device 302a. In various embodiments, walker agent 304 may comprise executable code306, as well as state information 308.

As shown in FIG. 3A, device 302 a may load executable code 306 whichperforms a particular computation for which it was configured andupdates state information 308, accordingly. Generally, state information308 may be a set of one or more parameter values that reflect thecurrent state of the computation performed by executable code 306. Suchvalues may be one or more observations about device 302 a (e.g., theneighbors of device 302 a, the signal strengths to the neighbors, etc.),the portion of network 300 around device 302 a, and/or computed valuesderived therefrom (e.g., averages, statistics, maxima or minima,gradients, etc.).

For example, assume that executable code 306 is configured to calculatean optimal value or running total at each hop or at specific pointsalong a networking path, based on the locally observable value(s) ateach device. In such a case, when device 302 a receives walker agent304, it may load and execute executable code 306 of walker agent 304, toretrieve its own locally observable value(s), perform the associatedcomputations on them, and update state information 308, accordingly.

As shown in FIGS. 3B-3C, once device 302 a has executed walker agent304, thereby updating state information 308 into updated stateinformation 308 a, device 302 a may send walker agent 304 to device 302b. In doing so, when device 302 b executes code 306 of walker agent 304,walker agent 304 is able to continue its computation from the point atwhich it left off on device 302 a. In other words, device 302 b may thenload walker agent 304 and update state information 308 a using its ownlocal information. Once completed, device 302 b may then send walkeragent 304 on to the next device in the network, to repeat the process.

In FIG. 3D, another key aspect of a walker agent is that its executionmay “hop” from device to device in the network, in various embodiments.Notably, after walker agent 304 has been passed to device 302 b, device302 a may unload walker agent 304 from its local system, thereby freeingup resources on device 302 a. In some embodiments, this may entaildeleting or otherwise removing walker agent 304 from 302 a after walkeragent 304 has been passed to device 302 b for execution. In other words,at any given time, a walker agent may be executed by a subset of one ormore devices in the network that changes over the course of time as theexecuting device(s) complete their computations.

As noted above, many nodes/devices in LLNs and IoT networks are highlyconstrained in terms of resources and capabilities. Accordingly, withrespect to extracting data from these nodes, the classical model is tohave the nodes send data back to a centralized database in the cloud.Queries can then be run against this database in an offline manner. Forexample, a temperature sensor in the network may pass temperaturereadings back to a cloud-based management system, allowing outsidedevices to access this reading via the cloud-based management system.However, in an LLN/IoT network where the data evolves rather quickly,but is rarely provided to the central database, this model will wasteconstrained node resources, such as bandwidth and energy. Thus, it maybe more efficient in some cases to obtain the data directly from thenetwork nodes themselves on demand. But, a reactive trigger that tellsall nodes to send all data needed for a query may also cause congestionand loss.

Distributed Network Query Using Walker Agents

The techniques herein also introduce a query walker agent that allows anetwork, such as an Internet of Things (IoT) network to be used as aquasi-database. The query walker agent may be a software agent thatmoves from node to node, to perform a query. This walk may beconstrained, e.g., to follow an isometry measure, steepest gradient, oracross nodes having certain characteristics.

Illustratively, the techniques described herein may be performed byhardware, software, and/or firmware, such as in accordance with thewalker agent process 248, which may include computer executableinstructions executed by the processor 220 (or independent processor ofinterfaces 210) to perform functions relating to the techniquesdescribed herein, e.g., in conjunction with routing process 244.

Specifically, in various embodiments, a device in a network receives aquery walker agent configured to query information from a distributedset of devices in the network based on a query. The device executes thequery walker agent to identify the query. The device updates stateinformation of the executing query walker agent using local informationfrom the device and based on the query. The device unloads the executingquery walker agent after updating the state information. The devicepropagates the query walker agent to one or more of the distributed setof devices in the network, when the updated state information does notfully answer the query.

Operationally, the techniques herein introduce a new model whereby thenetwork nodes themselves act as a collective database that can bequeried as needed. Note that it would also be impractical in manyimplementations to maintain full database code to handle complex querieson any given node. For example, a typical constrained node may not haveenough resources to execute a full SQL interpreter engine. Also, if suchan engine was placed in the node, it would be limited to its day-1capabilities, and may not be able to serve any unpredicted purpose.

By way of example, a user may want to query his or her IoT network witha complex request such as “all devices reporting a temperature within acertain range+location in a certain zone+a gradient with a neighbor ofat least a certain value.” Running such a query on any given node,however, may require more memory and CPU than the device can free up forthe task, or capabilities that the resident code does not have, such asa protocol to discuss with the neighboring nodes.

FIGS. 4A-4H illustrate and example of performing a network query using aquery walker agent, according to various embodiments. As noted above,the techniques herein introduce the concept of a query walker agent thatcan query the network itself, thereby transforming the network intoeffectively a database.

As shown in FIG. 4A, assume that there are nodes/devices 132 a-132 fwithin network portion 400 (e.g., a portion of network 100) areinterconnected by links 404. In such a case, node 132 a may receive aquery 406 that may query some or all of the nodes in network portion 400for one or more measurements, statuses, calculated values, combinationsthereof, or the like. For example, query 406 may be an SQL-based queryfor certain data available from network portion 400. In particular, node132 a may maintain a listing of the information available from the nodesin network portion 400 and, in turn, map the SQL-based query to theavailable information.

As shown in FIG. 4B, in response to receiving query 406, node 132 a maytranslate query 406 into the specific executable code of query walkeragent module 402. In turn, node 132 a may send agent module 402 intonetwork portion 400 for execution by any number of nodes in the network.For instance, the query may involve talking to neighboring nodes tocompare things, which can be done by forking a child agent from agentmodule 402, which may not be possible by running code that normallyresides on the node itself.

In FIGS. 4C-4G, each of nodes 132 b-132 f may receive the query walkeragent module 402 at various times, load and execute the agent to updatethe state information of the agent, pass the agent module 402 on toother nodes in the network, and unload the agent from the memory of thelocal node.

In various embodiments, the propagation of query walker agent module 402may be controlled by the parameters of query 406. For example, the querymay seek a maximum gradient, or be propagated along isometric lines fora measured value (e.g., temperature, etc.) within predefinedconstraints, such as location. These control parameters may be used tolimit the nodes that are being queried (e.g., the nodes that actuallyexecute query walker agent module 402). As would be appreciated, doingso may save additional resources in the network, compared to sending allthe data from the nodes to the cloud for later analysis.

As shown in FIG. 4H, agent module 402 may be sent back to theoriginating node 132 a, after a query terminating condition is met(e.g., after a certain amount of time has been met, after the targetexecuting nodes have executed agent module 402, after a certain numberof nodes 132 have executed agent module 402, etc.). From the stateinformation updates that occur at each executing node, the stateinformation in agent module 402 received by node 132 a may include theresults of the query. In turn, node 132 a may extract the query results408 from the state information of query walker agent module 402 andprovide them to the device that issued query 406.

Alternatively, agent module 402 may trigger the nodes that match thequery to report their data using their normal data paths in the network.In turn, only the data relevant to the query may be sent up to the cloudor other centralized database.

FIG. 5 illustrates an example simplified procedure for adaptivelyadjusting client characteristic collection for quality prediction, inaccordance with one or more embodiments described herein. For example, anon-generic, specifically configured device (e.g., device 200) mayperform procedure 500 by executing stored instructions (e.g., process248). The procedure 500 may start at step 505 and continue on to step510 where, as described in greater detail above, the device may receivea query walker agent. In general, the query walker agent may beconfigured to be executed by the device and to return an answer to asource of the query walker agent based on local information availablefrom a distributed set of devices to which the device belongs.

At step 515, as detailed above, the device may execute the query walkeragent to identify the query. Notably, the device may load and executethe query walker agent to determine which local information of thedevice may be needed to answer the query. For example, assume that thequery requests a computed temperature gradient across the set of devicesto which the device belongs. In such a case, the device may execute thequery walker agent, to determine that a temperature reading from thedevice is needed.

At step 520, the device may update state information of the executingquery walker agent using local information from the device and based onthe query, as described in greater detail above. In some embodiments,the update to the state information may simply entail storing the localinformation from the device in the state information of the query walkeragent. In other embodiments, the update may entail first using the localinformation of the device to perform a computation. For example, such acomputation may be the calculation of a gradient (e.g., a temperaturegradient along a path, etc.), isometric computation, or the like, in anattempt to answer the query. As would be appreciated, the result of thecomputation may fully answer the question or, alternatively, representan intermediate answer (e.g., if more readings from other devices in thenetwork are needed to fully answer the query, etc.). In turn, the devicemay update the state information of the query walker agent to reflectthe results of the computation.

At step 525, as detailed above, the device may unload the query walkeragent after updating the state information of the query walker agent.Notably, in many implementations, the device may have limited resources.Thus, after the query walker agent has completed its processing andcaptured the information needed from the device, the device may unload(e.g., close) the query walker agent, thereby freeing up resources onthe device.

At step 530, the device may propagate the query walker agent and theupdated state information to one or more of the distributed set ofdevices in the network, when the updated state information does notfully answer the query, as described in greater detail above. Forexample, if the query requires input from all or a subset of thedistributed set of devices to fully answer the query, the device maypropagate the query walker agent to one or more of the other devices inthe set. Alternatively, if the query is answered by the updated stateinformation, the device may notify the source of the agent of theresult, either by sending the results directly to the source via anexisting routing path or by propagating the agent with the updated stateinformation back to the source. In some embodiments, as noted, thedevice may fork the query walker agent into a child agent for executionby one of the other devices, such as when only a portion of acomputation or dataset is needed from the other device. In anotherembodiment, the device may also delete its copy of the query walkeragent after propagating the agent to the other devices. Procedure 500then ends at step 535.

FIG. 6 illustrates an example simplified procedure for adaptivelyadjusting client characteristic collection for quality prediction, inaccordance with one or more embodiments described herein. For example, anon-generic, specifically configured node may perform procedure 600 byexecuting stored instructions (e.g., process 248). The procedure 600 maystart at step 605 and continue on to step 610 where, as described ingreater detail above, the node may receive a query for informationavailable from a distributed set of devices in the network. In somecases, the information may be raw data, such as sensor readings from aset of distributed sensors. In other cases, the information beingqueried may be a computed result based on the information available fromthe distributed devices (e.g., a computation that combines sensorreadings, etc.). For example, the queried computation may be a gradient,isometric computation, or the like, across the information availablefrom the various devices in the distributed set. Further, the query mayalso indicate a physical location or other condition that may be used toidentify the set of distributed devices for the query (e.g., any or alldevices in a specified physical location). In various embodiments, thequery may be in the form of a structured language, such as SQL or thelike.

At step 615, as detailed above, the node may generate a query walkeragent configured for execution by the devices in the distributed set ofdevices to answer the query using the information available from thedistributed set of devices. For example, the node may determine thedevice types of the distributed set of devices and generate anexecutable program for the devices, accordingly. Such an agent may beable to access the memories of the devices and, in many cases, performcomputations based on the local information of the devices and thecurrent state information of the agent.

At step 620, the node may send the query walker agent to at least one ofthe devices in the distributed set of devices, as described in greaterdetail above. In various embodiments, the at least one device updatesstate information of the query walker agent and propagates the querywalker agent to one or more other devices of the distributed set. Saiddifferently, a device that receives the query walker agent may executethe agent to update the state information of the agent using the localinformation of the device, before propagating the agent with the updatedstate information on to another one of the distributed set of devices.

At step 625, as detailed above, the node may receive an answer to thequery from a particular one of the distributed set of devices based onthe updated state information of the query walker agent. In particular,once the devices execute the agent and the updated state information ofthe agent answers the query, the current device may either send thefinal result back to the node or may send the entire agent back to thenode with the updated state information. In various cases, the node mayuse the queried result locally and/or provide the resulting answer toanother device, such as a user interface, a remote service (e.g., acloud service), or to any other node/device that may issue queries tothe node. For example, in one specific embodiment, the node may itselfbe a field area router, gateway, or other root node of the network inwhich the set of distributed devices reside. Procedure 600 then ends atstep 630.

It should be noted that while certain steps within procedures 500-600may be optional as described above, the steps shown in FIGS. 5-6 aremerely examples for illustration, and certain other steps may beincluded or excluded as desired. Further, while a particular order ofthe steps is shown, this ordering is merely illustrative, and anysuitable arrangement of the steps may be utilized without departing fromthe scope of the embodiments herein. Moreover, while procedures 500-600are described separately, certain steps from each procedure may beincorporated into each other procedure, and the procedures are not meantto be mutually exclusive.

The techniques described herein, therefore, save bandwidth and energy inthe network nodes/devices by avoiding having them continuously reportdata to a central database. Instead, the techniques effectively convertthe network itself into a distributed database that can be queries usingwalker agents, which is much more resilient.

While there have been shown and described illustrative embodiments thatprovide for query walker agents, it is to be understood that variousother adaptations and modifications may be made within the spirit andscope of the embodiments herein. In addition, while certain querymechanisms are shown, such as SQL, other suitable query mechanisms maybe used, accordingly.

The foregoing description has been directed to specific embodiments. Itwill be apparent, however, that other variations and modifications maybe made to the described embodiments, with the attainment of some or allof their advantages. For instance, it is expressly contemplated that thecomponents and/or elements described herein can be implemented assoftware being stored on a tangible (non-transitory) computer-readablemedium (e.g., disks/CDs/RAM/EEPROM/etc.) having program instructionsexecuting on a computer, hardware, firmware, or a combination thereof.Accordingly, this description is to be taken only by way of example andnot to otherwise limit the scope of the embodiments herein. Therefore,it is the object of the appended claims to cover all such variations andmodifications as come within the true spirit and scope of theembodiments herein.

What is claimed is:
 1. A method comprising: receiving, at a device in anetwork, a query walker agent configured to query information from adistributed set of devices in the network based on a query; executing,by the device, the query walker agent to identify the query; updating,by the device, state information of the executing query walker agentusing local information from the device and based on the query, whereinupdating the state information of the executing query walker agentcomprises: retrieving, by the device, the local information from amemory of the device; performing, by the device, a computation using thestate information of the query walker agent and the retrieved localinformation from the memory of the device; and storing, by the device, aresult of the computation in the state information of the query walkeragent; unloading, by the device, the executing query walker agent afterupdating the state information; and propagating, by the device, thequery walker agent with the updated state information to one or more ofthe distributed set of devices in the network, when the updated stateinformation does not fully answer the query.
 2. The method as in claim1, wherein propagating, by the device, the query walker agent with theupdated state information to one or more of the distributed set ofdevices in the network comprises: forking, by the device, the querywalker agent into a child agent; and sending, by the device, the childagent to one of the distributed sets of devices, wherein the child agentis configured to obtain a portion of the information needed to answerthe query.
 3. The method as in claim 1, wherein the query comprises agradient or isometric computation of the information from thedistributed set of devices in the network.
 4. The method as in claim 3,wherein the distributed set of devices are located in a particularphysical area specified by the query.
 5. The method as in claim 1,further comprising: sending, by the device, the query walker agent andupdated state information to a source of the query walker agent, whenthe updated state information fully answers the query.
 6. The method asin claim 1, further comprising: sending, by the device, data indicativeof the updated state information of the query walker agent to a sourceof the query walker agent via an existing routing path to the source,when the updated state information fully answers the query.
 7. Themethod as in claim 1, wherein the query walker agent is generated by asource node in the network based on the query.
 8. A method comprising:receiving, at a node in a network, a query for information availablefrom a distributed set of devices in the network; generating, by thenode, a query walker agent configured for execution by the devices inthe distributed set of devices to answer the query using the informationavailable from the distributed set of devices; sending, by the node, thequery walker agent to at least one of the devices in the distributed setof devices, wherein the at least one device updates state information ofthe query walker agent and propagates the query walker agent to one ormore other devices of the distributed set, the at least one deviceupdating the state information by retrieving local information from amemory of the device, performing a computation using the stateinformation of the query walker agent and the retrieved localinformation from the memory of the device, and storing a result of thecomputation in the state information of the query walker agent; andreceiving, at the node, an answer to the query from a particular one ofthe distributed set of devices based on the updated state information ofthe query walker agent.
 9. The method as in claim 8, wherein the querycomprises a gradient or isometric computation of the information fromthe distributed set of devices in the network.
 10. The method as inclaim 9, wherein the distributed set of devices are located in aparticular physical area specified by the query.
 11. The method as inclaim 9, wherein the query comprises a SQL-based query.
 12. Anapparatus, comprising: one or more network interfaces to communicatewith a network; a processor coupled to the network interfaces andconfigured to execute one or more processes; and a memory configured tostore a process executable by the processor, the process when executedconfigured to: receive a query walker agent configured to queryinformation from a distributed set of devices in the network based on aquery; execute the query walker agent to identify the query; updatestate information of the executing query walker agent using localinformation from the device and based on the query, wherein theapparatus updates the state information of the executing query walkeragent by: retrieving the local information from a memory of the device;performing a computation using the state information of the query walkeragent and the retrieved local information from the memory of the device;and storing a result of the computation in the state information of thequery walker agent; unload the executing query walker agent afterupdating the state information; and propagate the query walker agentwith the updated state information to one or more of the distributed setof devices in the network, when the updated state information does notfully answer the query.
 13. The apparatus as in claim 12, wherein theapparatus propagates the query walker agent with the updated stateinformation to the one or more of the distributed set of devices in thenetwork by: forking the query walker agent into a child agent; andsending the child agent to one of the distributed sets of devices,wherein the child agent is configured to obtain a portion of theinformation needed to answer the query.
 14. The apparatus as in claim12, wherein the query comprises a gradient or isometric computation ofthe information from the distributed set of devices in the network. 15.The apparatus as in claim 14, wherein the distributed set of devices arelocated in a particular physical area specified by the query.
 16. Theapparatus as in claim 12, wherein the process when executed is furtherconfigured to: delete the query walker agent from the apparatus, afterpropagating the query walker agent and updated state information to theone or more devices in the distributed set of devices.
 17. The apparatusas in claim 12, wherein the process when executed is further configuredto: send data indicative of the updated state information of the querywalker agent to a source of the query walker agent via an existingrouting path to the source, when the updated state information fullyanswers the query.
 18. The apparatus as in claim 12, wherein apparatuscomprises a sensor and the local information comprises a sensor reading.